/**
 *
 * @param {*} promise 原始的任务
 * @param {*} ms 超时的时间
 * @param {*} onAbort 超时后要做什么
 */
export function withTimeout(promise, ms, onAbort) {
  let timer = null; // 存储定时器的返回值

  return new Promise((resolve, reject) => {
    timer = setTimeout(() => {
      try {
        onAbort && onAbort();
      } catch (err) {
        console.error("onAbort出错了", err);
      }
    }, ms);

    // 监听原始的任务
    promise.then(
      (v) => {
        clearTimeout(timer);
        resolve(v);
      },
      (e) => {
        clearTimeout(timer);
        reject(e);
      }
    );
  });
}
